La regresión lineal como su nombre lo indica permite crear relaciones lineales entre una variable dependiente y un grupo de variables independientes.
El reto consiste en minimizar
\[e=\sum_{i=1}^n(y_i-\hat{y}_i)^2\]
Donde \(y_i\) es el valor de la observación para la \(i-esima\) unidad, \(\hat{y}_i\) es el valor estimado para la \(i-esima\) observación.
Se puede observar que la anterior función se encuentra representada por una función cuadrática con coeficiente siempre positivo por lo que para encontrar un mínimo recurrimos a derivar esta función.
El modelo de regresión funciona sobre los siguientes supuestos
\[y_i = \beta_0+ \beta_1X_i+ e_i\]
donde \(e_i\sim N(0, \sigma^2)\), \(y\sim N(\mu,\sigma^2)\)
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 3.5.2
base <- read.csv("../Bases de datos/auto-mpg.csv")
kable(head(base),"markdown")
No | mpg | cylinders | displacement | horsepower | weight | acceleration | model_year | car_name |
---|---|---|---|---|---|---|---|---|
1 | 28 | 4 | 140 | 90 | 2264 | 15.5 | 71 | chevrolet vega 2300 |
2 | 19 | 3 | 70 | 97 | 2330 | 13.5 | 72 | mazda rx2 coupe |
3 | 36 | 4 | 107 | 75 | 2205 | 14.5 | 82 | honda accord |
4 | 28 | 4 | 97 | 92 | 2288 | 17.0 | 72 | datsun 510 (sw) |
5 | 21 | 6 | 199 | 90 | 2648 | 15.0 | 70 | amc gremlin |
6 | 23 | 4 | 115 | 95 | 2694 | 15.0 | 75 | audi 100ls |
Eliminamos las variables no útiles y se recodifican otras.
base$cylinders <- as.factor(base$cylinders)
base$car_name <- NULL
Se contruye el modelo.
modelo <- lm(mpg ~ ., base)
summary(modelo)
##
## Call:
## lm(formula = mpg ~ ., data = base)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.9746 -1.9709 -0.0937 1.7711 13.7483
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.884e+01 4.581e+00 -4.113 4.77e-05 ***
## No 4.417e-04 1.427e-03 0.310 0.757101
## cylinders4 6.259e+00 1.690e+00 3.704 0.000243 ***
## cylinders5 7.629e+00 2.540e+00 3.003 0.002845 **
## cylinders6 3.130e+00 1.876e+00 1.668 0.096027 .
## cylinders8 5.776e+00 2.170e+00 2.662 0.008086 **
## displacement 5.915e-03 6.952e-03 0.851 0.395384
## horsepower -1.876e-02 1.334e-02 -1.406 0.160608
## weight -6.221e-03 6.341e-04 -9.811 < 2e-16 ***
## acceleration 4.651e-02 9.503e-02 0.489 0.624830
## model_year 7.290e-01 4.903e-02 14.868 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.213 on 387 degrees of freedom
## Multiple R-squared: 0.8352, Adjusted R-squared: 0.831
## F-statistic: 196.2 on 10 and 387 DF, p-value: < 2.2e-16
En la tabla anterior se presenta la significancia de las de individual de cada una de las variables, además se presentan el error estándar los grados de libertad el \(R^2\) y el \(R_{abj}^2\) ajustado para el modelo y la significancia del modelo.
par(mfrow = c(2,2))
plot(modelo)